[アップデート] Amazon DocumentDB のインスタンスベースクラスターが AWS Secrets Manager を使ったパスワード管理の統合をサポートしました

[アップデート] Amazon DocumentDB のインスタンスベースクラスターが AWS Secrets Manager を使ったパスワード管理の統合をサポートしました

Clock Icon2024.12.22

こんにちは! AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

What's New にはまだ出てきていないのですが、インスタンスベースの Amazon DocumentDB クラスターが AWS Secrets Manager と統合し、クラスターの認証情報の管理を Secrets Manager にオフロードできるようになりました。

Support AWS Secret Manager managed password for AWS DocumentDB instance-based cluster.

https://awsapichanges.com/archive/changes/f4334b-rds.html

ドキュメントも登場してきていますね。

https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-secrets-manager.html

どんなアップデート?

アップデート前までは DocumentDB のユーザー管理はユーザー側で管理する必要がありました。定期的に AWS Lambda を使ってパスワードの更新し、認証情報の管理を Secrets Manager や Parameter Store に保管していたのではないでしょうか。

https://aws.amazon.com/jp/blogs/security/how-to-rotate-amazon-documentdb-and-amazon-redshift-credentials-in-aws-secrets-manager/

今回のアップデートで、ユーザーの認証情報の管理を Secrets Manager にオフロードできるようになりました。

たとえば、パスワードのローテーションはデフォルトで 7 日間で自動でローテーションされるようです。

Amazon DocumentDB manages the settings for the secret and rotates the secret every seven days by default. You can modify some of the settings, such as the rotation schedule. If you delete a cluster that manages a secret in Secrets Manager, the secret and its associated metadata are also deleted.

https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-secrets-manager.html#asm-overview

アプリケーションから見れば、 Secrets Manager の情報を見に行けばいいため、ほとんど意識せず DocumentDB のパスワードがローテーションできそうですね。

ちょうど 2 年前に Amazon RDS でアップデートがあったものの、 DocumentDB バージョンが来たイメージを持っていただけると良いのではないでしょうか。

https://dev.classmethod.jp/articles/aws-rds-integration-aws-secrets-manager/

制約事項

本機能には制約事項があります。詳しくはドキュメントをご覧ください。

  • Elastic クラスターではないこと
  • Amazon DocumentDB global database に所属するクラスターではないこと
  • Amazon DocumentDB のクロスリージョンリードレプリカを使っていないこと

https://docs.aws.amazon.com/documentdb/latest/developerguide/docdb-secrets-manager.html#asm-limitations

やってみる

それではやってみましょう。今回はマネジメントコンソールから確認します。

クラスター作成

クラスター作成時に Managed in AWS Secrets Manager が増えていますね。

2024-12-22 at 15.44.44-クラスターの作成  Amazon DocumentDB  ap-northeast-1.png

クラスターを作成すると Secrets Manager に新しいシークレットが作成されていました。

Secrets Manager

RDS と記載されていますが DocumentDB の物になります。

2024-12-22 at 15.53.32-シークレット  Secrets Manager  Secrets Manager  ap-northeast-1.png

ドキュメントに記載の通り、ローテーションはデフォルトで 7 日に設定されていますね。

2024-12-22 at 15.56.50-rds!cluster-ed733fdb-bac5-4e0f-a978-XXXXXXXXXX  Secrets Manager  Secrets Manager  ap-northeast-1.png

ローテーションの編集画面です。スケジュール式を選ぶと cron 等で表現できるようです。便利ですね。

また、お客様は Lambda ローテーション関数を選択する必要はありません。 は嬉しいポイントですね。

2024-12-22 at 15.58.17-rds!cluster-ed733fdb-bac5-4e0f-a978-XXXXXXXXXX  Secrets Manager  Secrets Manager  ap-northeast-1.png

シークレットの値を取得すると、指定したユーザー名と自動生成されたパスワードが格納されていました。

2024-12-22 at 16.00.38-rds!cluster-ed733fdb-bac5-4e0f-a978-XXXXXXXXXX  Secrets Manager  Secrets Manager  ap-northeast-1@2x.png

接続確認

接続してみます。 VPC に所属する CloudShell から接続してみます。

secrets=$(aws secretsmanager get-secret-value --secret-id rds\!cluster-ed733fdb-bac5-4e0f-a978-XXXXXXXXXX | jq .SecretString | jq fromjson | jq -r)
user=$(echo $secrets | jq -r .username)
password=$(echo $secrets | jq -r .password)

wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
mongosh --tls --host secretsmanager-integration.cluster-XXXXXXXXXXXX.ap-northeast-1.docdb.amazonaws.com:27017 --sslCAFile global-bundle.pem --username $user --password $password

うまく接続できているようです。

[cloudshell-user@ip-10-0-138-252 ~]$ secrets=$(aws secretsmanager get-secret-value --secret-id rds\!cluster-ed733fdb-bac5-4e0f-a978-XXXXXXXXXX | jq .SecretString | jq fromjson | jq -r)
[cloudshell-user@ip-10-0-138-252 ~]$ user=$(echo $secrets | jq -r .username)
[cloudshell-user@ip-10-0-138-252 ~]$ password=$(echo $secrets | jq -r .password)
[cloudshell-user@ip-10-0-138-252 ~]$
[cloudshell-user@ip-10-0-138-252 ~]$ wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
--2024-12-22 07:27:36--  https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
Resolving truststore.pki.rds.amazonaws.com (truststore.pki.rds.amazonaws.com)... 18.172.185.20, 18.172.185.113, 18.172.185.71, ...
Connecting to truststore.pki.rds.amazonaws.com (truststore.pki.rds.amazonaws.com)|18.172.185.20|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 147008 (144K) [application/octet-stream]
Saving to: ‘global-bundle.pem’

global-bundle.pem                                               100%[=====================================================================================================================================================>] 143.56K   573KB/s    in 0.3s

2024-12-22 07:27:37 (573 KB/s) - ‘global-bundle.pem’ saved [147008/147008]

[cloudshell-user@ip-10-0-138-252 ~]$ mongosh --tls --host secretsmanager-integration.cluster-XXXXXXXXXXXX.ap-northeast-1.docdb.amazonaws.com:27017 --sslCAFile global-bundle.pem --username $user --password $password
WARNING: argument --sslCAFile is deprecated and will be removed. Use --tlsCAFile instead.
Current Mongosh Log ID: 6767bf6b3031d4a87f194de3
Connecting to:          mongodb://<credentials>@secretsmanager-integration.cluster-XXXXXXXXXXXX.ap-northeast-1.docdb.amazonaws.com:27017/?directConnection=true&tls=true&tlsCAFile=global-bundle.pem&appName=mongosh+2.3.2
Using MongoDB:          5.0.0
Using Mongosh:          2.3.2

For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/


To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.

------
   Warning: Non-Genuine MongoDB Detected
   This server or service appears to be an emulation of MongoDB rather than an official MongoDB product.
   Some documented MongoDB features may work differently, be entirely missing or incomplete, or have unexpected performance characteristics.
   To learn more please visit: https://dochub.mongodb.org/core/non-genuine-mongodb-server-warning.
------

rs0 [direct: primary] test>

まとめ

以上、「Amazon DocumentDB のインスタンスベースクラスターが AWS Secrets Manager との統合をサポートするようになりました」でした。

煩雑になりがちなパスワード管理をうまく DocumentDB でもオフロードできるようになりました。素晴らしいですね。

このブログがどなたかの参考になれば幸いです。

AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.